home *** CD-ROM | disk | FTP | other *** search
/ Game.EXE 2001 January / Game.EXE_01_2001.iso / demos / Blade of Darkness / data1.cab / Program_Executable_Files / Scripts / GotoMapVars.pyc (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2000-11-16  |  13.3 KB  |  361 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 1.5)
  3.  
  4. import Bladex
  5. import GameState
  6. import MemPersistence
  7. import BBLib
  8. import string
  9.  
  10. class MainCharState(GameState.EntityPersonState):
  11.     '''Clase para grabar el estado del jugador'''
  12.     
  13.     def __init__(self, ent_name = 'Player1'):
  14.         import CharStats
  15.         entity = Bladex.GetEntity(ent_name)
  16.         if not entity:
  17.             return None
  18.         
  19.         import Actions
  20.         self.Props = { }
  21.         self.Props['Life'] = CharStats.GetCharMaxLife(entity.Kind, entity.Level)
  22.         self.Props['Level'] = entity.Level
  23.         self.Props['PartialLevel'] = entity.PartialLevel
  24.         self.Props['Energy'] = entity.Energy
  25.         self.Props['Armor'] = (entity.MeshName, entity.Data.armour_level, entity.Data.armour_prot_factor)
  26.         GameState.EntityPersonState.__init__(self, entity)
  27.         inv = entity.GetInventory()
  28.         self.Inventory = { }
  29.         self.Inventory['Objects'] = []
  30.         for i in range(inv.nKindObjects):
  31.             for name in Actions.GetListOfObjectsAt(inv, i):
  32.                 self.Inventory['Objects'].append(self._MainCharState__GetObjAux(name))
  33.             
  34.         
  35.         self.Inventory['Weapons'] = []
  36.         for i in range(inv.nWeapons):
  37.             self.Inventory['Weapons'].append(self._MainCharState__GetObjAux(inv.GetWeapon(i)))
  38.         
  39.         self.Inventory['Shields'] = []
  40.         for i in range(inv.nShields):
  41.             self.Inventory['Shields'].append(self._MainCharState__GetObjAux(inv.GetShield(i)))
  42.         
  43.         self.Inventory['Quivers'] = []
  44.         for i in range(inv.nQuivers):
  45.             self.Inventory['Quivers'].append(self._MainCharState__GetObjAux(inv.GetQuiver(i)))
  46.         
  47.         self.Inventory['Keys'] = []
  48.         for i in range(inv.nKeys):
  49.             self.Inventory['Keys'].append(self._MainCharState__GetObjAux(inv.GetKey(i)))
  50.         
  51.         self.Inventory['SpecialKeys'] = []
  52.         for i in range(inv.nSpecialKeys):
  53.             self.Inventory['SpecialKeys'].append(self._MainCharState__GetObjAux(inv.GetSpecialKey(i)))
  54.         
  55.         self.Inventory['Tablets'] = []
  56.         for i in range(inv.nTablets):
  57.             self.Inventory['Tablets'].append(self._MainCharState__GetObjAux(inv.GetTablet(i)))
  58.         
  59.         self.Inventory['InvLeft'] = self._MainCharState__GetObjAux(entity.InvLeft)
  60.         self.Inventory['InvLeft2'] = self._MainCharState__GetObjAux(entity.InvLeft2)
  61.         self.Inventory['InvLeftBack'] = self._MainCharState__GetObjAux(entity.InvLeftBack)
  62.         self.Inventory['InvRightBack'] = self._MainCharState__GetObjAux(entity.InvRightBack)
  63.  
  64.     
  65.     def __GetBOD(self, ent_kind):
  66.         RM = BBLib.GetResourceManager()
  67.         for i in range(RM.NResources(BBLib.B_CID_OBJDSCR)):
  68.             if RM.IsResourceLoaded(BBLib.B_CID_OBJDSCR, i):
  69.                 if RM.GetResourceName(BBLib.B_CID_OBJDSCR, i) == ent_kind:
  70.                     return RM.GetResourceFile(BBLib.B_CID_OBJDSCR, i)
  71.                 
  72.             
  73.         
  74.         return None
  75.  
  76.     
  77.     def __GetObjAux(self, obj):
  78.         if not obj:
  79.             return None
  80.         
  81.         objKind = Bladex.GetEntity(obj).Kind
  82.         return (obj, objKind, self._MainCharState__GetBOD(objKind))
  83.  
  84.     
  85.     def GetProps(self):
  86.         temp = { }
  87.         temp['Life'] = self.Props['Life']
  88.         temp['Level'] = self.Props['Level']
  89.         temp['PartialLevel'] = self.Props['PartialLevel']
  90.         temp['Energy'] = self.Props['Energy']
  91.         temp['Armor'] = self.Props['Armor']
  92.         return (self.CreationProps, temp, self.Inventory)
  93.  
  94.  
  95.  
  96. def CreateEntAux(obj_tuple, obj_kind, props = 1):
  97.     import ItemTypes
  98.     obj = Bladex.GetEntity(obj_tuple[0])
  99.     if not obj:
  100.         BBLib.ReadBOD(obj_tuple[2])
  101.         obj = Bladex.CreateEntity(obj_tuple[0], obj_tuple[1], 0, 0, 0, obj_kind)
  102.         if props:
  103.             ItemTypes.ItemDefaultFuncs(obj)
  104.         
  105.     
  106.     return obj
  107.  
  108.  
  109. def CreateMainCharWithProps(props):
  110.     CreationProps = props[0]
  111.     Props = props[1]
  112.     Inventory = props[2]
  113.     import Basic_Funcs
  114.     import AniSound
  115.     import Reference
  116.     import Sparks
  117.     import Breakings
  118.     import Actions
  119.     char = Bladex.CreateEntity('Player1', CreationProps['Kind'], 0, 0, 0, 'Person')
  120.     char.Data = Basic_Funcs.PlayerPerson(char)
  121.     inv = char.GetInventory()
  122.     AniSound.AsignarSonidosCaballero('Player1')
  123.     char.Level = Props['Level']
  124.     char.PartialLevel = Props['PartialLevel']
  125.     char.Life = Props['Life']
  126.     char.Energy = Props['Energy']
  127.     char.SetMesh(Props['Armor'][0])
  128.     char.Data.armour_level = Props['Armor'][1]
  129.     char.Data.armour_prot_factor = Props['Armor'][2]
  130.     char.SendTriggerSectorMsgs = 1
  131.     for i in Inventory['Objects']:
  132.         CreateEntAux(i, 'Physic')
  133.         Actions.ExtendedTakeObject(inv, i[0])
  134.     
  135.     for i in Inventory['Weapons']:
  136.         obj = CreateEntAux(i, 'Weapon')
  137.         object_flag = Reference.GiveObjectFlag(i[0])
  138.     
  139.     for i in Inventory['Shields']:
  140.         CreateEntAux(i, 'Weapon')
  141.         inv.AddShield(i[0])
  142.     
  143.     for i in Inventory['Quivers']:
  144.         obj = CreateEntAux(i, 'Weapon')
  145.         inv.AddQuiver(i[0])
  146.     
  147.     for i in Inventory['Keys']:
  148.         CreateEntAux(i, 'Physic', 0)
  149.         inv.AddKey(i[0])
  150.     
  151.     for i in Inventory['SpecialKeys']:
  152.         CreateEntAux(i, 'Physic', 0)
  153.         inv.AddSpecialKey(i[0])
  154.     
  155.     for i in Inventory['Tablets']:
  156.         CreateEntAux(i, 'Physic', 0)
  157.         inv.AddTablet(i[0])
  158.     
  159.  
  160.  
  161. def RestoreMainCharState(key):
  162.     props = MemPersistence.Get(key)
  163.     if props:
  164.         CreateMainCharWithProps(props)
  165.         return 1
  166.     
  167.     return 0
  168.  
  169.  
  170. def SaveMainCharState(key):
  171.     ent_state = MainCharState('Player1')
  172.     props = ent_state.GetProps()
  173.     MemPersistence.Store(key, props)
  174.  
  175. VisitedMaps = [
  176.     0,
  177.     0,
  178.     0,
  179.     0,
  180.     0,
  181.     0,
  182.     0,
  183.     0,
  184.     0,
  185.     0,
  186.     0,
  187.     0,
  188.     0,
  189.     0,
  190.     0,
  191.     0,
  192.     0]
  193. PlacedTablets = [
  194.     0,
  195.     0,
  196.     0,
  197.     0,
  198.     0,
  199.     0]
  200. MText = []
  201. BaList = []
  202. for a in range(17):
  203.     MText.append([])
  204.  
  205. PWeapons = []
  206. PItems = []
  207.  
  208. def MapText(MapNum, MapTex):
  209.     if MapNum == -1:
  210.         BaList.append(MapTex)
  211.     else:
  212.         MText[MapNum - 1].append(MapTex)
  213.  
  214.  
  215. def PickedWeapon(Weapon):
  216.     PWeapons.append(Weapon)
  217.  
  218.  
  219. def PickedItems(Item):
  220.     PItems.append(Item)
  221.  
  222.  
  223. def Set2DMapValuesAux():
  224.     return [
  225.         VisitedMaps,
  226.         PlacedTablets,
  227.         MText,
  228.         PWeapons,
  229.         PItems,
  230.         BaList]
  231.  
  232.  
  233. def Get2DMapValuesAux(vals):
  234.     global VisitedMaps, PlacedTablets, MText, PWeapons, PItems, BaList
  235.     if vals:
  236.         VisitedMaps = vals[0]
  237.         PlacedTablets = vals[1]
  238.         MText = vals[2]
  239.         PWeapons = vals[3]
  240.         PItems = vals[4]
  241.         BaList = vals[5]
  242.         return 1
  243.     
  244.     return 0
  245.  
  246.  
  247. def Get2DMapValues():
  248.     print 'Get2DMapValues()'
  249.     vals = MemPersistence.Get('2DMapValues')
  250.     if vals:
  251.         return Get2DMapValuesAux(vals)
  252.     else:
  253.         print "Get2DMapValues() -> can't find vals."
  254.     return 0
  255.  
  256.  
  257. def GetCarriedTablets():
  258.     a = [
  259.         0,
  260.         0,
  261.         0,
  262.         0,
  263.         0,
  264.         0]
  265.     for i in MemPersistence.Get('MainChar')[2]['Tablets']:
  266.         a[string.atoi(i[0][len('tablilla')]) - 1] = 1
  267.     
  268.     return a
  269.  
  270.  
  271. def BeginLevel():
  272.     pj = RestoreMainCharState('MainChar')
  273.     if pj:
  274.         return Get2DMapValues()
  275.     
  276.     return 0
  277.  
  278. LevelNames = [
  279.     'barb_m1',
  280.     'ragnar_m2',
  281.     'dwarf_m3',
  282.     'ruins_m4',
  283.     'mine_m5',
  284.     'labyrinth_m6',
  285.     'tomb_m7',
  286.     'island_m8',
  287.     'orc_m9',
  288.     'orlok_m10',
  289.     'ice_m11',
  290.     'btomb_m12',
  291.     'desert_m13',
  292.     'volcano_m14',
  293.     'palace_m15',
  294.     'tower_m16',
  295.     'chaos_m17']
  296. BackLevelNames = [
  297.     'mine_back',
  298.     'labyrinth_back',
  299.     'tomb_back',
  300.     'ice_back',
  301.     'btomb_back',
  302.     'desert_back',
  303.     'palace_back']
  304.  
  305. def StoreCharInfo():
  306.     import string
  307.     
  308.     try:
  309.         pname = Bladex.GetCurrentMap()
  310.         name = string.lower(pname)
  311.         if name == 'palace_m15':
  312.             name = 'palace_back'
  313.         
  314.         if not (name in BackLevelNames):
  315.             iIndex = LevelNames.index(name)
  316.         else:
  317.             iIndex = BackLevelNames.index(name)
  318.             VisitedMaps[14] = 1
  319.         Bladex.SetStringValue('LastVisitedMap', 'M_' + str(iIndex + 1))
  320.         VisitedMaps[iIndex] = 1
  321.         print iIndex
  322.         MemPersistence.Store('2DMapValues', Set2DMapValuesAux())
  323.     except Exception:
  324.         exc = None
  325.         print 'Exception in StoreCharInfo', exc
  326.  
  327.     SaveMainCharState('MainChar')
  328.  
  329.  
  330. def EndOfLevel():
  331.     print 'EndOfLevel()'
  332.     print 'Preparing main char for the travel.'
  333.     import Actions
  334.     print 'Actions.PutAllInBack("Player1")'
  335.     Actions.PutAllInBack('Player1')
  336.     print 'Actions.RemoveAllKeys("Player1")'
  337.     Actions.RemoveAllKeys('Player1')
  338.     print 'Actions.RemoveNoTravelObjects( "Player1" )'
  339.     Actions.RemoveNoTravelObjects('Player1')
  340.     StoreCharInfo()
  341.     if string.lower(Bladex.GetCurrentMap()) == 'tower_m16':
  342.         Bladex.LoadLevel('Chaos_m17')
  343.     else:
  344.         Bladex.LoadLevel('2dMap')
  345.  
  346.  
  347. def CreatePJ_PY():
  348.     SaveMainCharState('MainChar')
  349.     cfgfile = open('pj.py', 'w')
  350.     cfgfile.write('import GotoMapVars\n')
  351.     cfgfile.write('GotoMapVars.VisitedMaps             = ' + `VisitedMaps` + '\n')
  352.     cfgfile.write('GotoMapVars.PlacedTablets           = ' + `PlacedTablets` + '\n')
  353.     cfgfile.write('GotoMapVars.MText                   = ' + `MText` + '\n')
  354.     cfgfile.write('GotoMapVars.PWeapons                = ' + `PWeapons` + '\n')
  355.     cfgfile.write('GotoMapVars.PItems                  = ' + `PItems` + '\n')
  356.     cfgfile.write('GotoMapVars.BaList                  = ' + `BaList` + '\n')
  357.     cfgfile.write('charprops = ' + `MemPersistence.Get('MainChar')` + '\n')
  358.     cfgfile.write('GotoMapVars.CreateMainCharWithProps(charprops)' + '\n')
  359.     cfgfile.close()
  360.  
  361.